const fp = require('lodash/fp');
const cars = [{
    name: "Ferrari FF",
    horsepower: 660,
    dollar_value: 700000,
    in_stock: true
}, {
    name: "Spyker c12 Zagato",
    horsepower: 650,
    dollar_value: 648000,
    in_stock: false
}, {
    name: "Jaguar XKR-S",
    horsepower: 550,
    dollar_value: 13200,
    in_stock: false
}, {
    name: "Audi R8",
    horsepower: 525,
    dollar_value: 114200,
    in_stock: false
}, {
    name: "Aston Martin One-77",
    horsepower: 750,
    dollar_value: 1850000,
    in_stock: true
},
{
    name: "Pagani Huayra",
    horsepower: 700,
    dollar_value: 1300000,
    in_stock: false
}];


//练习1
const fun = fp.flowRight(fp.prop("in_stock"), fp.last);
console.log(fun(cars));

//练习2
const firstName = fp.flowRight(fp.prop("name"), fp.first)
console.log(firstName(cars));

//练习3

let _average = function(xs) {
    return fp.reduce(fp.add, 0, xs) / xs.length;
}

// let averageDollarValue = function(cars) {
//     let dollar_values = fp.map(function(car) {
//         return car.dollar_value
//     }, cars);
//     return _average(dollar_values);
// }

const com = fp.flowRight(_average, fp.map(car => car.dollar_value));
console.log(com(cars));

//练习4
let _underscore = fp.replace(/\W+/g, "_");
let sanitizeNames = fp.flowRight(
    fp.map(_underscore),
    fp.map(fp.toLower),
    fp.map((car) => car.name)
);;
console.log(sanitizeNames);